package application;

import java.io.File;
import java.util.ArrayList;

/**
*	@(#) UI.java
* 
*	Une interface qui abstrait les fonctionnalites principales d'une interface homme-machine
*	dans le cadre d'un editeur de texte simple.
*/
public interface UI {
	
	/**
	*	@return L'indice de debut de la selection courante.
	*/
	public int getSelectionStart();
	
	/**
	*	@return L'indice de fin de la selection courante.
	*/
	public int getSelectionEnd();
	
	/**
	*	@return La chaine de caracteres en attente d'insertion.
	*/
	public String getTemp();
	
	/**
	*	Met a jour la liste des commandes de l'interface homme-machine.
	*
	*	@param commands	
	*				La liste des nouvelles commandes concretes.
	*/
	public void setCommmands(ArrayList<Command> commands);
	
	/**
	*	Rafraichissement du champ de texte de l'interface homme-machine.
	*
	*	@param buffer
	*				La nouvelle chaine de caracteres.
	*	@param begin
	*				Le nouveau indice de debut de selection.
	*	@param end
	*				Le nouveau indice de fin de selection.
	*/
	public void refresh(String buffer, int begin, int end);
	
	public void disableCopy();
	
	public void enableCopy();
	
	public void disableCut();
	
	public void enableCut();
	
	public void disablePaste();
	
	public void enablePaste();
	
	public void disableUndo();
	
	public void enableUndo();
	
	public void disableRedo();
	
	public void enableRedo();
	
	public void disableBeginMacro();
	
	public void enableBeginMacro();
	
	public void disableEndMacro();
	
	public void enableEndMacro();
	
	public void disableExecMacro();
	
	public void enableExecMacro();
	
	/**
	*	@return Le fichier ouvert.
	*/
	public File getOpenedFile();
	
	/**
	*	@return Le fichier enregistre du document courant.
	*/
	public File getSavedFile();
	
}